# 封装
import logging.handlers


class GetLogger:
    logger = None

    @classmethod
    def get_logger(cls, filename, when="midnight", interval=1, Count= 30):
        if cls.logger is None:
            # 获取 日志器
            logger = logging.getLogger()
            # 设置 日志器 级别
            logger.setLevel(logging.INFO)
            # 获取处理器 控制台
            sh = logging.StreamHandler()
            # 获取处理器 文件 以时间分割
            th = logging.handlers.TimedRotatingFileHandler(filename, when=when, interval=interval,
                                                           backupCount=Count,
                                                           encoding="utf-8")
            # 设置 格式器
            fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"
            fm = logging.Formatter(fmt)
            # 将格式器添加到 处理器 控制台
            sh.setFormatter(fm)
            # 将格式器添加到 处理器 文件
            th.setFormatter(fm)
            # 将处理器添加到 日志器
            logger.addHandler(sh)
            logger.addHandler(th)
